How to build a program from scratch